\rcube_tnef_decoder

MS-TNEF format decoder based on code by: Graham Norbury <gnorbury@bondcar.com> Original design by: Thomas Boll <tb@boll.ch>, Mark Simpson <damned@world.std.com>

Summary

Methods
Properties
Constants
decompress()
rtf2text()
No public properties found
SIGNATURE
LVL_MESSAGE
LVL_ATTACHMENT
AFROM
ASUBJECT
AMESSAGEID
AFILENAME
APARENTID
ACONVERSATIONID
ABODY
ADATESENT
ADATERECEIVED
ADATEMODIFIED
APRIORITY
AOWNER
ASENTFOR
ASTATUS
ATTACHDATA
ATTACHMETAFILE
ATTACHCREATEDATE
ARENDDATA
AMAPIPROPS
ARECIPIENTTABLE
AMAPIATTRS
AOEMCODEPAGE
AORIGINALMCLASS
AMCLASS
AVERSION
MAPI_TYPE_UNSET
MAPI_NULL
MAPI_SHORT
MAPI_INT
MAPI_FLOAT
MAPI_DOUBLE
MAPI_CURRENCY
MAPI_APPTIME
MAPI_ERROR
MAPI_BOOLEAN
MAPI_OBJECT
MAPI_INT8BYTE
MAPI_STRING
MAPI_UNICODE_STRING
MAPI_SYSTIME
MAPI_CLSID
MAPI_BINARY
MAPI_BODY
MAPI_RTF_COMPRESSED
MAPI_BODY_HTML
MAPI_NATIVE_BODY
MAPI_DISPLAY_NAME
MAPI_ADDRTYPE
MAPI_EMAIL_ADDRESS
MAPI_COMMENT
MAPI_DEPTH
MAPI_PROVIDER_DISPLAY
MAPI_CREATION_TIME
MAPI_LAST_MODIFICATION_TIME
MAPI_RESOURCE_FLAGS
MAPI_PROVIDER_DLL_NAME
MAPI_SEARCH_KEY
MAPI_ATTACHMENT_X400_PARAMETERS
MAPI_ATTACH_DATA
MAPI_ATTACH_ENCODING
MAPI_ATTACH_EXTENSION
MAPI_ATTACH_FILENAME
MAPI_ATTACH_METHOD
MAPI_ATTACH_LONG_FILENAME
MAPI_ATTACH_PATHNAME
MAPI_ATTACH_RENDERING
MAPI_ATTACH_TAG
MAPI_RENDERING_POSITION
MAPI_ATTACH_TRANSPORT_NAME
MAPI_ATTACH_LONG_PATHNAME
MAPI_ATTACH_MIME_TAG
MAPI_ATTACH_ADDITIONAL_INFO
MAPI_ATTACH_MIME_SEQUENCE
MAPI_ATTACH_CONTENT_ID
MAPI_ATTACH_CONTENT_LOCATION
MAPI_ATTACH_FLAGS
MAPI_NAMED_TYPE_ID
MAPI_NAMED_TYPE_STRING
MAPI_NAMED_TYPE_NONE
MAPI_MV_FLAG
RTF_UNCOMPRESSED
RTF_COMPRESSED
_getx()
_geti()
_decodeAttribute()
_extractMapiAttributes()
_decodeMessage()
_decodeAttachment()
convertString()
_decodeRTF()
_decompressRTF()
_rtfIsPlain()
$codepage
N/A
No private methods found
No private properties found
N/A

Constants

SIGNATURE

SIGNATURE = 0x223e9f78

LVL_MESSAGE

LVL_MESSAGE = 0x1

LVL_ATTACHMENT

LVL_ATTACHMENT = 0x2

AFROM

AFROM = 0x8000

ASUBJECT

ASUBJECT = 0x18004

AMESSAGEID

AMESSAGEID = 0x18009

AFILENAME

AFILENAME = 0x18010

APARENTID

APARENTID = 0x1800a

ACONVERSATIONID

ACONVERSATIONID = 0x1800b

ABODY

ABODY = 0x2800c

ADATESENT

ADATESENT = 0x38005

ADATERECEIVED

ADATERECEIVED = 0x38006

ADATEMODIFIED

ADATEMODIFIED = 0x38020

APRIORITY

APRIORITY = 0x4800d

AOWNER

AOWNER = 0x60000

ASENTFOR

ASENTFOR = 0x60001

ASTATUS

ASTATUS = 0x68007

ATTACHDATA

ATTACHDATA = 0x6800f

ATTACHMETAFILE

ATTACHMETAFILE = 0x68011

ATTACHCREATEDATE

ATTACHCREATEDATE = 0x38012

ARENDDATA

ARENDDATA = 0x69002

AMAPIPROPS

AMAPIPROPS = 0x69003

ARECIPIENTTABLE

ARECIPIENTTABLE = 0x69004

AMAPIATTRS

AMAPIATTRS = 0x69005

AOEMCODEPAGE

AOEMCODEPAGE = 0x69007

AORIGINALMCLASS

AORIGINALMCLASS = 0x70006

AMCLASS

AMCLASS = 0x78008

AVERSION

AVERSION = 0x89006

MAPI_TYPE_UNSET

MAPI_TYPE_UNSET = 0x0

MAPI_NULL

MAPI_NULL = 0x1

MAPI_SHORT

MAPI_SHORT = 0x2

MAPI_INT

MAPI_INT = 0x3

MAPI_FLOAT

MAPI_FLOAT = 0x4

MAPI_DOUBLE

MAPI_DOUBLE = 0x5

MAPI_CURRENCY

MAPI_CURRENCY = 0x6

MAPI_APPTIME

MAPI_APPTIME = 0x7

MAPI_ERROR

MAPI_ERROR = 0xa

MAPI_BOOLEAN

MAPI_BOOLEAN = 0xb

MAPI_OBJECT

MAPI_OBJECT = 0xd

MAPI_INT8BYTE

MAPI_INT8BYTE = 0x14

MAPI_STRING

MAPI_STRING = 0x1e

MAPI_UNICODE_STRING

MAPI_UNICODE_STRING = 0x1f

MAPI_SYSTIME

MAPI_SYSTIME = 0x40

MAPI_CLSID

MAPI_CLSID = 0x48

MAPI_BINARY

MAPI_BINARY = 0x102

MAPI_BODY

MAPI_BODY = 0x1000

MAPI_RTF_COMPRESSED

MAPI_RTF_COMPRESSED = 0x1009

MAPI_BODY_HTML

MAPI_BODY_HTML = 0x1013

MAPI_NATIVE_BODY

MAPI_NATIVE_BODY = 0x1016

MAPI_DISPLAY_NAME

MAPI_DISPLAY_NAME = 0x3001

MAPI_ADDRTYPE

MAPI_ADDRTYPE = 0x3002

MAPI_EMAIL_ADDRESS

MAPI_EMAIL_ADDRESS = 0x3003

MAPI_COMMENT

MAPI_COMMENT = 0x3004

MAPI_DEPTH

MAPI_DEPTH = 0x3005

MAPI_PROVIDER_DISPLAY

MAPI_PROVIDER_DISPLAY = 0x3006

MAPI_CREATION_TIME

MAPI_CREATION_TIME = 0x3007

MAPI_LAST_MODIFICATION_TIME

MAPI_LAST_MODIFICATION_TIME = 0x3008

MAPI_RESOURCE_FLAGS

MAPI_RESOURCE_FLAGS = 0x3009

MAPI_PROVIDER_DLL_NAME

MAPI_PROVIDER_DLL_NAME = 0x300a

MAPI_SEARCH_KEY

MAPI_SEARCH_KEY = 0x300b

MAPI_ATTACHMENT_X400_PARAMETERS

MAPI_ATTACHMENT_X400_PARAMETERS = 0x3700

MAPI_ATTACH_DATA

MAPI_ATTACH_DATA = 0x3701

MAPI_ATTACH_ENCODING

MAPI_ATTACH_ENCODING = 0x3702

MAPI_ATTACH_EXTENSION

MAPI_ATTACH_EXTENSION = 0x3703

MAPI_ATTACH_FILENAME

MAPI_ATTACH_FILENAME = 0x3704

MAPI_ATTACH_METHOD

MAPI_ATTACH_METHOD = 0x3705

MAPI_ATTACH_LONG_FILENAME

MAPI_ATTACH_LONG_FILENAME = 0x3707

MAPI_ATTACH_PATHNAME

MAPI_ATTACH_PATHNAME = 0x3708

MAPI_ATTACH_RENDERING

MAPI_ATTACH_RENDERING = 0x3709

MAPI_ATTACH_TAG

MAPI_ATTACH_TAG = 0x370a

MAPI_RENDERING_POSITION

MAPI_RENDERING_POSITION = 0x370b

MAPI_ATTACH_TRANSPORT_NAME

MAPI_ATTACH_TRANSPORT_NAME = 0x370c

MAPI_ATTACH_LONG_PATHNAME

MAPI_ATTACH_LONG_PATHNAME = 0x370d

MAPI_ATTACH_MIME_TAG

MAPI_ATTACH_MIME_TAG = 0x370e

MAPI_ATTACH_ADDITIONAL_INFO

MAPI_ATTACH_ADDITIONAL_INFO = 0x370f

MAPI_ATTACH_MIME_SEQUENCE

MAPI_ATTACH_MIME_SEQUENCE = 0x3710

MAPI_ATTACH_CONTENT_ID

MAPI_ATTACH_CONTENT_ID = 0x3712

MAPI_ATTACH_CONTENT_LOCATION

MAPI_ATTACH_CONTENT_LOCATION = 0x3713

MAPI_ATTACH_FLAGS

MAPI_ATTACH_FLAGS = 0x3714

MAPI_NAMED_TYPE_ID

MAPI_NAMED_TYPE_ID = 0x0

MAPI_NAMED_TYPE_STRING

MAPI_NAMED_TYPE_STRING = 0x1

MAPI_NAMED_TYPE_NONE

MAPI_NAMED_TYPE_NONE = 0xff

MAPI_MV_FLAG

MAPI_MV_FLAG = 0x1000

RTF_UNCOMPRESSED

RTF_UNCOMPRESSED = 0x414c454d

RTF_COMPRESSED

RTF_COMPRESSED = 0x75465a4c

Properties

$codepage

$codepage

Methods

decompress()

decompress(string  $data, bool  $as_html = false) : array

Decompress the data.

Parameters

string $data

The data to decompress.

bool $as_html

Return message body as HTML

Returns

array —

The decompressed data.

rtf2text()

rtf2text(string  $text) : string

Parse RTF data and return the best plaintext representation we can.

Adapted from: http://webcheatsheet.com/php/reading_the_clean_text_from_rtf.php

Parameters

string $text

The RTF (uncompressed) text.

Returns

string —

The plain text.

_getx()

_getx(string  $data, int  $bytes) : string

Pop specified number of bytes from the buffer.

Parameters

string $data

The data string.

int $bytes

How many bytes to retrieve.

Returns

string —

Extracted data

_geti()

_geti(string  $data, int  $bits) : int|null

Pop specified number of bits from the buffer

Parameters

string $data

The data string.

int $bits

How many bits to retrieve.

Returns

int|null —

_decodeAttribute()

_decodeAttribute(string  $data) : string

Decode a single attribute

Parameters

string $data

The data string.

Returns

string —

Extracted data

_extractMapiAttributes()

_extractMapiAttributes(string  $data, mixed  $result) : mixed

TODO

Parameters

string $data

The data string.

mixed $result

Returns

mixed —

_decodeMessage()

_decodeMessage(string  $data, array  $message) : mixed

Decodes TNEF message attributes

Parameters

string $data

The data string.

array $message

Message data

Returns

mixed —

_decodeAttachment()

_decodeAttachment(string  $data, array  $attachment) : mixed

Decodes TNEF attachment attributes

Parameters

string $data

The data string.

array $attachment

Attachments data

Returns

mixed —

convertString()

convertString(mixed  $str, mixed  $use_codepage = false) : mixed

Convert string value to system charset according to defined codepage

Parameters

mixed $str
mixed $use_codepage

Returns

mixed —

_decodeRTF()

_decodeRTF(mixed  $data) : mixed

Decodes TNEF RTF

Parameters

mixed $data

Returns

mixed —

_decompressRTF()

_decompressRTF(mixed  $data, mixed  $size) : mixed

Decompress compressed RTF. Logic taken from Horde.

Parameters

mixed $data
mixed $size

Returns

mixed —

_rtfIsPlain()

_rtfIsPlain(mixed  $s) : mixed

Checks if an RTF element is plain text

Parameters

mixed $s

Returns

mixed —